package com.hbzhit.modules.act.handle;

import org.activiti.engine.runtime.ProcessInstance;

import java.util.Map;

/**
 * 流程接口
 *
 * @author DING
 * @date 2019年7月23日
 */
public interface WorkFlow {

    /**
     * 启动流程
     *
     * @param processDefinitionKey 流程定义id
     * @param businessKey 业务id
     * @param variables 变量参数
     * @return 流程实例
     */
    ProcessInstance startProcessInstanceByKey(String processDefinitionKey, String businessKey, Map<String, Object> variables);

    /**
     * 启动流程
     *
     * @param processDefinitionKey 流程定义id
     * @param businessKey 业务id
     * @param variables 变量参数
     * @param tenantId 租户id
     * @return 流程实例
     */
    ProcessInstance startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String businessKey, Map<String, Object> variables, String tenantId);

    /**
     * 终止流程
     *
     * @param processInstanceId 流程实例id
     */
    void suspendProcessInstanceById(String processInstanceId);


    /**
     * 删除流程
     *
     * @param processInstanceId 流程实例id
     * @param deleteReason      删除理由
     */
    void deleteProcessInstance(String processInstanceId, String deleteReason);

    /**
     * 设置流程开始节点发起人
     *
     * @param authenticatedUserId 流程发起人id
     */
    void setAuthenticatedUserId(String authenticatedUserId);

}

